﻿// -----------------------------------------------------------------------
// <copyright file="ICollectionHelper.cs" company="none">
// Copyright (c) 2012 M. Alberti, xanatos(at)live.it
// Distributed under the MIT/X11 software license, see the accompanying
// file COPYING or http://www.opensource.org/licenses/mit-license.php.
// </copyright>
// -----------------------------------------------------------------------

namespace FluentSerializer
{
    using System.Linq.Expressions;

    /// <summary>
    /// 
    /// </summary>
    public interface ICollectionHelper : IModifier
    {
        /// <summary>
        /// 
        /// </summary>
        bool IsUniversal
        {
            get;
        }

        /// <summary>
        /// 
        /// </summary>
        bool IsFixedLength
        {
            get;
        }

        /// <summary>
        /// 
        /// </summary>
        /// <param name="reader"></param>
        /// <param name="length"></param>
        /// <returns></returns>
        Expression DeserializeLength(Expression reader, Expression length);

        /// <summary>
        /// 
        /// </summary>
        /// <param name="writer"></param>
        /// <param name="length"></param>
        /// <returns></returns>
        Expression SerializeLength(Expression writer, Expression length);

        /// <summary>
        /// 
        /// </summary>
        /// <param name="length"></param>
        /// <returns></returns>
        Expression SizeLength(Expression length);
    }
}